Jsr299BindingsInterceptor{
  final ClassLoader tccl=SecurityActions.getContextClassLoader();
    this.ejbName=ejbName;
    EjbDescriptor<Object> descriptor=beanManager.getEjbDescriptor(this.ejbName);
    SessionBean<Object> bean=beanManager.getBean(descriptor);
    final AtomicReference<ManagedReference> reference=(AtomicReference<ManagedReference>)context.getContextData().get(SerializedCdiInterceptorsKey.class);
      creationalContext=beanManager.createCreationalContext(bean);
      InterceptorBindings interceptorBindings=getInterceptorBindings(this.ejbName);
          addInterceptorInstance((Interceptor<Object>)interceptor,beanManager,interceptorInstances);
      WeldInterceptorInstances instances=new WeldInterceptorInstances(creationalContext,interceptorInstances);
      context.getContextData().put(SerializedCdiInterceptorsKey.class,new AtomicReference<ManagedReference>(new ValueManagedReference(new ImmediateValue<Object>(instances))));
      final WeldInterceptorInstances instances=(WeldInterceptorInstances)reference.get().getInstance();
      creationalContext=instances.getCreationalContext();
    SecurityActions.setContextClassLoader(tccl);
}
delegateInterception{
  List<Object> currentInterceptorInstances=new ArrayList<Object>();
  for (  Interceptor<?> interceptor : currentInterceptors) {
    currentInterceptorInstances.add(interceptorInstances.get(interceptor.getBeanClass().getName()).getInstance());
  if (currentInterceptorInstances.size() > 0) {
    return new DelegatingInterceptorInvocationContext(invocationContext,currentInterceptors,currentInterceptorInstances,interceptionType).proceed();
}
doMethodInterception{
  InterceptorBindings interceptorBindings=getInterceptorBindings(ejbName);
    List<Interceptor<?>> currentInterceptors=interceptorBindings.getMethodInterceptors(interceptionType,invocationContext.getMethod());
}
processInvocation{
    return doMethodInterception(context.getInvocationContext(),InterceptionType.AROUND_INVOKE);
  return doMethodInterception(context.getInvocationContext(),InterceptionType.AROUND_TIMEOUT);
  return doLifecycleInterception(context);
return doLifecycleInterception(context);
}
doLifecycleInterception{
  try {
      delegateInterception(context.getInvocationContext(),interceptionType,currentInterceptors);
    return context.proceed();
}
getInterceptorBindings{
  EjbServices ejbServices=beanManager.getServices().get(EjbServices.class);
    ejbServices=((ForwardingEjbServices)ejbServices).delegate();
    interceptorBindings=((WeldEjbServices)ejbServices).getBindings(ejbName);
}
addInterceptorInstance{
  Object instance=beanManager.getContext(interceptor.getScope()).get(interceptor,creationalContext);
  SerializableContextualInstance<Interceptor<Object>,Object> serializableContextualInstance=beanManager.getServices().get(ContextualStore.class).<Interceptor<Object>,Object>getSerializableContextualInstance(interceptor,instance,creationalContext);
  instances.put(interceptor.getBeanClass().getName(),serializableContextualInstance);
}
Factory{ }
create{
  final Jsr299BindingsInterceptor interceptor=new Jsr299BindingsInterceptor((BeanManagerImpl)weldContainer.getValue().getBeanManager(beanArchiveId),ejbName,context,interceptionType,classLoader);
}
getWeldContainer{ }
